home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / VDIINQUI.D < prev    next >
Encoding:
Modula Definition  |  1990-12-11  |  8.8 KB  |  192 lines

  1. DEFINITION MODULE VDIInquires;
  2.  
  3.  
  4. (*  Megemax Modula-2 GEM-Library :  Die VDI Nachfragefunktionen
  5.  *
  6.  *  Autor: Manuel Chakravarty           Erstellt :  04.11.87
  7.  *
  8.  *  Version   2.2     V#0015
  9.  *)
  10.  
  11. (*      Dieses Modul dient zum Erfragen der mit den Routine von 'VDIAttributs'
  12.  *      gesetzten Parameter. Darüber hinaus können noch einige andere Werte
  13.  *      ermittelt werden.
  14.  *      Die 'Extended Inquire'-Funktion ist nicht aufgeführt, da die von ihr
  15.  *      gelieferten Parameter, unter anderem, mit 'GEMEnv.DeviceParameter'
  16.  *      erfragt werden können.
  17.  *      Außerdem ist 'Inquire Input Mode' nicht vorhanden, da es von dem
  18.  *      Modul 'VDIInputs' schon implizit verwendet wird.
  19.  *)
  20.  
  21.  
  22. FROM GrafBase   IMPORT Rectangle, WritingMode;
  23.  
  24. FROM GEMGlobals IMPORT LineType, MarkerType, FillType, THorJust,
  25.                        TVertJust, LineEnding;
  26.  
  27. FROM GEMEnv     IMPORT DeviceHandle;
  28.  
  29.  
  30. PROCEDURE GetColorDef (    handle : DeviceHandle;
  31.                            color  : CARDINAL;
  32.                            set    : BOOLEAN;
  33.                        VAR r, g, b: CARDINAL);
  34.                        
  35.         (*  Damit kann man die RGB-Anteile des Farbindex 'color' erfragen.
  36.          *  Ist 'set = FALSE', so werden die gesetzten Werte zurückgegeben,
  37.          *  sonst liefert die Prozedur die auf dem Gerät realisierte Farb-
  38.          *  mischung. Dabei enthält 'r' den Rot-, 'g' den Grün- und 'b'
  39.          *  den Blauanteil.
  40.          *  Konnten die Werte, zum Beispiel weil der Index nicht existiert,
  41.          *  nicht ermittelt werden, so ist 'GemError () = TRUE'.
  42.          *)
  43.  
  44. PROCEDURE GetLineStyle (    handle: DeviceHandle;
  45.                         VAR typ   : LineType;
  46.                         VAR color : CARDINAL;
  47.                         VAR mode  : WritingMode;
  48.                         VAR begin,
  49.                             end   : LineEnding;
  50.                         VAR width : CARDINAL);
  51.                         
  52.         (*  Erfragt die Attribute für das Linienzeichnen. Es ist 'typ'
  53.          *  der Linientyp, 'color' der verwendete Farbindex, 'mode' der
  54.          *  Schreibmodus und 'width' die Strichstärke.
  55.          *)
  56.                        
  57. PROCEDURE GetMarkerStyle (    handle: DeviceHandle;
  58.                           VAR typ   : MarkerType;
  59.                           VAR color : CARDINAL;
  60.                           VAR mode  : WritingMode;
  61.                           VAR height: CARDINAL);
  62.                           
  63.         (*  Die Makierungsattribute werden ermittelt. Dabei ist 'typ'
  64.          *  die Art der Makierung, 'color' die Makierungsfarbe, 'mode'
  65.          *  der Schreibmodus und 'height' die Höhe der Makierung.
  66.          *)
  67.                          
  68. PROCEDURE GetFillStyle (    handle: DeviceHandle;
  69.                         VAR typ   : FillType;
  70.                         VAR color : CARDINAL;
  71.                         VAR index : CARDINAL;
  72.                         VAR mode  : WritingMode;
  73.                         VAR peri  : BOOLEAN);
  74.                         
  75.         (*  Liefert die Modi für das Füllen von Flächen. Es ist 'typ'
  76.          *  der Fülltyp, 'color' die Füllfarbe, 'index' der Index des
  77.          *  eventuell verwendeten Musters, 'mode' der Schreibmodus und
  78.          *  'peri' zeigt an, ob die gefüllte Fläche umrahmt wird.
  79.          *)
  80.                        
  81. PROCEDURE GetTextStyle (    handle                  : DeviceHandle;
  82.                         VAR font, color, angle      : CARDINAL;
  83.                         VAR hor                     : THorJust;
  84.                         VAR vert                    : TVertJust;
  85.                         VAR mode                    : WritingMode;
  86.                         VAR charW, charH, boxW, boxH: CARDINAL    );
  87.                         
  88.         (*  Die von dieser Prozedur ermittelten Parameter sind bei Text-
  89.          *  ausgaben relevant. Dabei spezifiziert:
  90.          *
  91.          *  'font'   -- den verwendeten Zeichensatz
  92.          *  'color'  -- den benutzten Farbindex
  93.          *  'angle'  -- den Winkel der Grundlinie zur Horizontalen
  94.          *  'hor'    -- die horizontale Justierung
  95.          *  'vert'   -- die vertikale Justierung
  96.          *  'mode'   -- den aktuellen Schreibmodus
  97.          *  'charW'  -- die Zeichenbreite
  98.          *  'charH'  -- die Zeichenhöhe
  99.          *  'boxW'   -- die Breite einer Zeichenbox
  100.          *  'boxH'   -- die Höhe einer Zeichenbox
  101.          *)
  102.                        
  103. PROCEDURE TextExtent (handle: DeviceHandle; REF str: ARRAY OF CHAR): Rectangle;
  104.  
  105.         (*  Diese Funktion berechnet Ausmaße des Rechtecks, das die
  106.          *  Zeichenkette 'str', würde sie ausgegeben, belegt.
  107.          *)
  108.  
  109. PROCEDURE GetCharSize (    handle: DeviceHandle;
  110.                            ch    : CHAR;
  111.                        VAR width,
  112.                            dLeft,
  113.                            dRight: CARDINAL);
  114.                        
  115.         (*  Für das Zeichen 'ch' wird in dieser Routine die Zeichenbreite
  116.          *  und der Abstand des Zeichens vom linken ('dLeft') und vom
  117.          *  rechten Rand ('dRight'),der Zeichenzelle, erfragt.
  118.          *)
  119.  
  120. PROCEDURE GetFaceName (    handle: DeviceHandle;
  121.                            num   : CARDINAL;
  122.                        VAR name  : ARRAY OF CHAR);
  123.  
  124.         (*  Es wird der Name ('name') des Zeichensatzes mit der Kennummer
  125.          *  'num' geliefert.
  126.          *  Der Systemzeichensatz hat die Nummer 1, weitere, mit LoadFonts
  127.          *  nachgeladene Fonts sind ab 2 durchnumeriert.
  128.          *  Außerdem wird hiermit die Zugriffskennung eines Fonts
  129.          *  ermittelt, um ihn daraufhin mit "VDIAttributes.SetTextFace"
  130.          *  als Fonts für die Textausgabe (GrafText) zu aktivieren.
  131.          *  Leider wurde der Parameter hierfür bei dieser Funktion
  132.          *  vergessen. Sie können ihn aber leicht ermitteln, indem Sie
  133.          *  mithilfe des Moduls "GEMBase" nach dem Aufruf von "GetFaceName"
  134.          *  das erste Integer-Rückgabefeld auslesen. Beispielsweise so:
  135.          *   VAR aespb: GEMBase.AESPB; vdipb: GEMBase.VDIPB;
  136.          *    ...
  137.          *    GEMBase.GetPBs (gemHdl, vdipb, aespb);
  138.          *    GetFaceName (devHdl, fontNr, fontName);
  139.          *    fontHandle:= vdipb.iooff^[0];
  140.          *    SetTextFace (devHdl, fontHandle);
  141.          *  Ein ausführlicheres Beispiel finden Sie im DEMO-Modul "TextDemo".
  142.          *)
  143.          
  144. PROCEDURE GetCellArray (    handle             : DeviceHandle;
  145.                             frame              : Rectangle;
  146.                             rowLength, numRows : CARDINAL;
  147.                         VAR usedElems, usedRows: CARDINAL;
  148.                         VAR undef              : BOOLEAN;
  149.                         VAR colArray           : ARRAY OF CARDINAL);
  150.  
  151.         (*  Mit dieser Prozedur kann man eine 'Cell Array'-Definition er-
  152.          *  fragen.
  153.          *  Es ist 'frame' der Rechteckbereich, der erfragt werden soll,
  154.          *  'rowLength' die Länge einer Zeile im Array und 'numRows' die
  155.          *  Anzahl der Zeilen. 'usedElems' liefert die Anzahl der pro Zeile
  156.          *  benutzten Elemente, 'usedRows' die Zahl der benutzten Zeilen
  157.          *  und 'undef' besagt ob die Farbwerte ermittelt werden konnten
  158.          *  ('undef = FALSE' bedeutet: Kein Fehler). 'colArray' enthält
  159.          *  die ermittelten Farbindizies.
  160.          *
  161.          *  HINWEIS: Diese Routine ist in der aktuellen TOS Version nicht
  162.          *           implementiert.
  163.          *)
  164.  
  165. PROCEDURE GetFaceInfo (    handle                 : DeviceHandle;
  166.                        VAR minADE, maxADE         : CARDINAL;
  167.                        VAR bottom, descent,
  168.                            half, ascent, top      : CARDINAL;
  169.                        VAR maxWidth, deltaXSpecial,
  170.                            leftOff, rightOff      : INTEGER);
  171.                        
  172.         (*  Erfragt einige Informationen über den aktuellen Zeichensatz.
  173.          *
  174.          *  'minADE'    -- Die Ordinalzahl des ersten darstellbaren Zeichens
  175.          *  'maxADE'    -- Die Ordinalzahl des letzen darstellbaren Zeichens
  176.          *
  177.          *  Abstand von der Grundlinie (base Line) für,
  178.          *
  179.          *  'bottom'        -- die untere Grenze der Zeichenbox (bottom line)
  180.          *  'descent'       -- die Grenze der Unterlängen (descent line)
  181.          *  'half'          -- die Grenze für Kleinbuchstaben (half line)
  182.          *  'ascent'        -- die Grenze für Großbuchstaben (ascent line)
  183.          *  'top'           -- die obere Grenze der Zeichenbox (top line)
  184.          *
  185.          *  'maxWidth'      -- Die Zellenbreite des breitesten Zeichens
  186.          *  'deltaXSpecial' -- Horizontale Verbreiterung bei Spezialeffekten
  187.          *  'leftOff'       -- Linker Offset für Spezialeffekte
  188.          *  'rightOff'      -- Rechter Offset für Spezialeffekte
  189.          *)
  190.  
  191.  
  192. END VDIInquires.